package com.qqt.csr.route.vo.resp;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.qqt.csr.common.idempotent.RequestKeyParam;
import com.qqt.csr.common.operalog.OperaLogSchema;
import com.qqt.csr.route.vo.req.RouteBizRuleReqVO;
import com.qqt.csr.route.vo.req.RouteQueueOverflowCfgReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import jakarta.validation.constraints.*;
import lombok.*;
import lombok.experimental.Accessors;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * 客服路由分发规则
 */
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@JsonIgnoreProperties(ignoreUnknown = true)
@Schema(name = "RouteDistributionRuleDetailRespVO", description = "路由规则")
public class RouteDistributionRuleDetailRespVO implements Serializable {
    @Serial
    private static final long serialVersionUID = -4614124200425624360L;

    @Schema(description = "路由id",requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer id;

    @Schema(description = "策略名称",requiredMode = Schema.RequiredMode.REQUIRED)
    private String name;

    @Schema(description = "服务时间id",requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer bizTimeId;

    @Schema(description = "服务时间内进线话术",requiredMode = Schema.RequiredMode.REQUIRED)
    private String workTimeInTip;

    @Schema(description = "非服务时间拦截话术",requiredMode = Schema.RequiredMode.REQUIRED)
    private String restTimeInTip;

    @Schema(description = "路由业务规则",requiredMode = Schema.RequiredMode.REQUIRED)
    private List<RouteBizRuleRespVO> routeBizRuleList;

    @Schema(description = "业务选择错误提示话术",requiredMode = Schema.RequiredMode.REQUIRED)
    private String bizSelectErrorTip;

    @Schema(description = "业务选择错误次数",requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer bizSelectErrorCount;

    @Schema(description = "业务选择错误达到上限次数后操作：0 退出排队；1 随机在配置的业务中分配",requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer bizSelectErrorAction;

    @Schema(description = "业务选择错误达到上限次数后退出排队的提示",requiredMode = Schema.RequiredMode.REQUIRED)
    private String bizSelectErrorQuitTip;

    @Schema(description = "访客排队话术",requiredMode = Schema.RequiredMode.REQUIRED)
    private String queueTip;

    @Schema(description = "退出排队触发词，多个触发词用，隔开",requiredMode = Schema.RequiredMode.REQUIRED)
    private String quitQueueWord;

    @Schema(description = "触发词触发退出排队话术",requiredMode = Schema.RequiredMode.REQUIRED)
    private String quitQueueWordTip;

    @Schema(description = "客排队话术播报间隔，单位秒",requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer queueTipInterval;

    @Schema(description = "排队超时时间，单位秒",requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer queueTimeout;

    @Schema(description = "超时策略：0 溢出其他组；1 退出路由",requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer queueTimeoutType;

    @Schema(description = "超时策略溢出其他组后的技能组配置",requiredMode = Schema.RequiredMode.REQUIRED)
    private RouteQueueOverflowCfgRespVO queueTimeoutCfg;

    @Schema(description = "排队时间上限，单位秒",requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer queueTimeLimit;

    @Schema(description = "排队时间上限触发退出排队话术",requiredMode = Schema.RequiredMode.REQUIRED)
    private String quitQueueTimeLimitTip;
}